﻿using System;

namespace enyo.g11n
{
    //TODO:
    public class Locale
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="spec">The specifier parameter (spec) is a string in the following format: [language][_region][_variant]
        /// <para>The language is a two-letter ISO 639 language code (e.g., "en", "fr", "it") </para>
        /// <para>The region is a two-letter ISO 3166 country code, lower-cased (e.g., "us", "ca", "fr", "it").</para>
        /// <para>The variant may be any string that contains ASCII letter characters and no spaces or underscores.</para>
        /// </param>
        public Locale(string spec)
        {
        }

        /// <summary>
        /// Returns the entire locale spec for the current locale.
        /// </summary>
        /// <returns></returns>
        public string GetLocale()
        {
            return null;
        }

        /// <summary>
        /// Returns the language of this locale.
        /// </summary>
        /// <returns></returns>
        public string GetLanguage()
        {
            return null;
        }

        /// <summary>
        /// Returns the region of this locale.
        /// </summary>
        /// <returns></returns>
        public string GetRegion()
        {
            return null;
        }

        /// <summary>
        /// Returns the variant of this locale, if any.
        /// </summary>
        /// <returns></returns>
        public string GetVariant()
        {
            return null;
        }

        /// <summary>
        /// Returns the locale spec with the region and variant upper-cased to conform to ISO standards. The spec returned from this function can then be used with other libraries of international routines, such as ICU.
        /// </summary>
        /// <returns></returns>
        public string ToISOString()
        {
            return null;
        }

        /// <summary>
        /// Returns a boolean indicating whether the current locale is compatible with the passed-in locale. To be compatible means that one locale can substitute for the other in translations and localized files.
        /// </summary>
        /// <param name="locale"></param>
        /// <returns></returns>
        public bool IsMatch(Locale locale)
        {
            return false;
        }

        /// <summary>
        /// Returns true if the current locale exactly matches the passed-in locale. Locales that are equal necessarily match (i.e., they are compatible), but locales that are compatible aren't necessarily equal.
        /// </summary>
        /// <param name="locale"></param>
        /// <returns></returns>
        public bool Equals(Locale locale)
        {
            return false;
        }
    }
}
